1. 对于移动成本低总是被拷贝的可拷贝形参,考虑按值传递

  • 总结:
    • 对于可拷贝,移动开销低,而且无条件被拷贝的形参,按值传递效率基本与按引用传递效率一致,而且易于实现,还生成更少的目标代码。
    • 通过构造拷贝形参可能比通过赋值拷贝形参开销大的多。
    • 按值传递会引起切片问题,所说不适合基类形参类型。

2. 考虑使用置入代替插入

  • 注意使用插入和置入的区别,前者需要传递完整的对象,后者之需要传递构造函数的参数即可,并且不会创建临时对象(push_backemplace_back)
  • 总结:
    • 原则上,置入函数有时会比插入函数高效,并且不会更差。
    • 实际上,当以下条件满足时,置入函数更快:(1)值被构造到容器中,而不是直接赋值;(2)传入的类型与容器的元素类型不一致;(3)容器不拒绝已经存在的重复值。
    • 置入函数可能执行插入函数拒绝的类型转换。